Performans için Tasarım Kriterleri
Bilgisayar mimarisi ve organizasyonu, bilgisayarın performansını etkileyen birçok tasarım kriterini içerir. Bu kriterler, bilgisayarın işlemci, bellek, veri yolları, giriş/çıkış aygıtları ve diğer bileşenlerinin etkileşimlerini yöneterek bir araya gelir. Aşağıda, performansı artırmak için kullanılan bazı ana tasarım kriterleri yer almaktadır:
İşlemci hızı ve sayısı: İşlemci hızı, işlemcinin saniyede kaç talimat işleyebileceğini belirler. İşlemcinin hızı arttıkça, bilgisayarın işlem yapma kapasitesi de artar. İşlemci sayısı da önemlidir, çünkü birden fazla işlemcinin kullanılması, paralel işleme ve daha hızlı hesaplama sürelerine olanak tanır.
Bellek boyutu ve hızı: Bellek, bilgisayarın verileri depoladığı ve işlediği yerdir. Daha büyük bellek, daha fazla veri depolama kapasitesi sağlar. Bellek hızı, bilgisayarın verileri hızlı bir şekilde işleyebilmesini sağlar.
Önbellek boyutu ve hızı: İşlemcinin yanındaki küçük bellek alanı olan önbellek, işlemcinin sık kullanılan verilere hızlı erişmesini sağlar. Daha büyük ve daha hızlı önbellek, işlemcinin verilere daha hızlı erişmesine olanak tanır.
Veri yolu genişliği: Veri yolu, bilgisayarın verilerin hareket ettiği yolları ifade eder. Geniş bir veri yolu, daha hızlı veri transferi sağlar.
Giriş/Çıkış (I/O) hızı: Bilgisayarın I/O aygıtları (örneğin, sabit diskler, USB sürücüler ve ağ adaptörleri) veri taşırlar. Daha hızlı I/O aygıtları, veri transferinin daha hızlı olmasını sağlar.
Paralel işleme yeteneği: Paralel işleme, birden fazla işlemci kullanarak aynı anda birden fazla işlem yapmayı ifade eder. Paralel işleme, performansı artırır ve daha hızlı işlem yapmayı sağlar.
Bellek hiyerarşisi: Bellek hiyerarşisi, bilgisayarın belleklerinin farklı seviyelerini ifade eder. Önbellek, ana bellek ve sabit disk gibi farklı bellek seviyeleri, veri erişim sürelerini ve işlem hızını etkiler.
Bu tasarım kriterleri, performansı artırmak için kullanılan bazı temel faktörlerdir.
Branch Prediction
Programların if koşullarını veya döngülerini işlemek için bilgisayarlar genellikle branch (şube) komutlarını kullanırlar. Ancak, branch komutları, programın çalışma süresini artırabilir ve performansı düşürebilir. Bu nedenle, branch prediction (şube tahmini) kullanarak, bilgisayarın programın ne yapacağını önceden tahmin etmesi ve gereksiz yere işlem yapmasını önlemesi mümkün hale gelir.
Bilgisayar, branch komutlarından önceki verileri ve program akışını analiz ederek, bir sonraki işlem için en olası senaryoyu tahmin edebilir. — Bilgisayar Mimarlığı Uzmanları
Bu tahmin, işlemci performansını artırabilir ve programların daha hızlı çalışmasına yardımcı olabilir.
Data Flow Analysis
Data flow analysis (veri akışı analizi), bir programın hangi verilerin kullanıldığını ve nasıl işlendiğini analiz eder. Bu analiz, programın bellek kullanımını ve veri erişimini optimize etmek için kullanılabilir. Örneğin, bir programda bir dizi değişken kullanıldığında, bilgisayar bu değişkenlerin nasıl birbirine bağlandığını ve bir değişkenin ne zaman kullanıldığını analiz edebilir.
Bu analiz, değişkenlerin bellekten daha hızlı erişilebilir hale getirilmesine ve programın daha hızlı çalışmasına yardımcı olabilir.
Speculative Execution
Speculative execution (öngörülü işlem), işlemcinin programın akışını analiz ederek, bir sonraki işlemi tahmin etmesini ve bu işlemi önceden yapmasını sağlayan bir tekniktir. Bu teknik, işlemcinin bir sonraki adım için verileri önceden yüklemesini ve işlem yapmasını mümkün kılar.
Eğer tahmin doğruysa, programın çalışma süresi azaltılabilir ve performans artırılabilir. — Bilgisayar Araştırma Raporları
Ancak, tahmin yanlışsa, bu durum işlemcinin daha fazla işlem yapmasına neden olabilir ve programın performansını azaltabilir. Bu nedenle, öngörülü işlem genellikle riskli bir teknik olarak kabul edilir ve dikkatli bir şekilde kullanılması gerektiği belirtilir.
CPU Gerçekleştirim Aşamaları
Temel bir CPU'nun çalışma prensibi, birden fazla gerçekleştirme aşamasından oluşur. Bu aşamalar, bilgisayarın işlemcisi tarafından program komutlarından birini alarak, yürütmesi ve sonuçları döndürmesi için gereklidir. İşlem aşamaları, sırayla aşağıdaki gibidir:
Instruction Fetch (Komut Alımı): Bu aşamada, programın bir sonraki komutu bellekten alınır ve işlemciye yüklenir. İşlemci, komutun başlangıç adresini kullanarak, bellekten komutları alır ve programın çalışmasını devam ettirir.
Instruction Decode (Komut Çözümleme): Bu aşamada, işlemci komutu çözümleyerek, ne yapması gerektiğini belirler. Komutun işlemi, işlemcinin yürütmesi için gereken diğer verileri de belirleyebilir.
Execution (İşlem Yürütme): Bu aşamada, komutun yürütülmesi gerçekleşir. İşlemci, komutun gerektirdiği işlemi yapar ve sonucu belirler.
Memory Access (Bellek Erişimi): Bu aşamada, işlemci belleğe erişerek, verileri okur veya yazabilir. Bu aşamada, işlemci, programın çalışması için gerekli olan verileri bellekten alır veya işlem sonucunu belleğe yazabilir.
Write Back (Yazma Geri): Bu aşamada, işlemci işlem sonucunu belirler ve sonucu ilgili kaydediciye veya bellek konumuna yazar.
Bu temel aşamalar, işlemcinin her bir program komutunu nasıl işlediğini açıklar. Her bir aşama, işlemcinin performansını artırmak için optimize edilebilir ve özelleştirilebilir.
Makine komutu karakteristikleri nelerdir
Makine komutları, bilgisayarın işlemci tarafından anlaşılabilen bir dizi düşük seviye talimattır. Bu komutlar, verileri alır, işler ve sonuçları diğer kaynaklara veya bellek konumlarına yazar. Makine komutlarının temel karakteristikleri şunlardır:
İşlem Kodu (Opcode): İşlem kodu, komutun işlemcinin yapması gereken temel işlemi belirtir. Örneğin, bir toplama veya çıkarma işlemi gerçekleştirmek için farklı işlem kodları kullanılır.
Operandlar: Operandlar, komutun yürütülmesi için gerekli olan verileri veya bellek adreslerini belirtir. Operandlar, komutun yapılacak işlem türüne bağlı olarak değişebilir.
Bellek Adresleme Modu: Bellek adresleme modu, komutun bellek adresine nasıl eriştiğini belirler. Direkt bellek adreslemesi, kaynak veya hedef bellek adreslerinin doğrudan belirtildiği bir yöntemdir.
Adres Genişlemesi: Adres genişlemesi, komutların işlemci tarafından yürütüleceği bellek konumlarının büyüklüğünü belirler.
İşlemci Modu: İşlemci modu, işlemcinin hangi işletim sistemini veya programı yürüttüğünü belirler.
Makine komutlarının bu özellikleri, işlemcinin işlevselliğini belirleyen önemli faktörlerdir.
Makinenin işlem türleri
Data Transfer (Veri Transferi): Bu işlem türü, bellekteki verilerin bir yerden başka bir yere kopyalanmasını veya taşınmasını içerir.
Aritmetik: Bu işlem türü, sayısal değerlerin matematiksel işlemlerle işlenmesini içerir.
Logic (Mantık): Bu işlem türü, mantıksal operasyonların gerçekleştirilmesini içerir.
Conversion (Dönüştürme): Bu işlem türü, farklı sayısal biçimler arasında dönüşümlerin yapılmasını içerir.
Input/Output (Giriş/Çıkış): Bu işlem türü, işlemcinin girdi veya çıktı cihazlarıyla iletişim kurmasını sağlar.
System Control (Sistem Kontrolü): Bu işlem türü, sistem düzeyinde kontrol işlemlerinin gerçekleştirilmesini içerir.
Transfer of Control (Kontrol Aktarımı): Bu işlem türü, programın kontrol akışının kontrol edilmesini sağlar.